import random
import pygame
import math

# 初始化pygame
pygame.init()

# 定义窗口尺寸
width = 1000
height = 900

# 创建窗口
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Dynamic Fireworks")

#定义一个烟花粒子的类。每个粒子将具有位置、速度和颜色属性。我们还定义了一个更新方法，用于更新粒子的位置和速度
class FireworkParticle:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.vx = random.uniform(-10, 1)
        self.vy = random.uniform(-20, -1)
        self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))

    def update(self):
        self.x += self.vx
        self.y += self.vy
        self.vy += 0.1

#开始绘制烟花粒子了。在每一帧中，我们会更新粒子的位置，并将其绘制到屏幕上。
# 创建一个粒子列表
particles = []

# 游戏主循环
running = True
while running:
    # 清空屏幕
    screen.fill((0, 0, 0))

    # 检查事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 生成新的粒子
    if random.random() < 0.02:
        particle = FireworkParticle(width/2, height)
        particles.append(particle)

    # 更新粒子位置并绘制到屏幕上
    for particle in particles:
        particle.update()
        pygame.draw.circle(screen, particle.color, (int(particle.x), int(particle.y)), 10)

    # 移除已经离开屏幕的粒子
    particles = [particle for particle in particles if particle.y < height]

    # 更新屏幕
    pygame.display.flip()

# 退出pygame
pygame.quit()